package demo7;

import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class Person {
    private String name;
    public Person() {
        System.out.println("1.Person的构造方法被调用了");
    }

    public String getName() {
        return name;
    }
    @Value("name = 张三")
    public void setName(String name) {
        System.out.println("2.Person的setName方法调用了，初始化name属性");
        this.name = name;
    }

    /**
     * 当我们定义一个方法并打上@PostConstruct注解，
     * 那么Spring容器会在创建对象实例之后，属性也初始化后，
     * 才调用这个方法
     */
    @PostConstruct
    public void postConstruct() {
        System.out.println("3.Person的postConstruct方法被调用了");
    }

    public void play(){
        System.out.println("4.正常的方法调用了");
        System.out.println(name+"出去玩");
    }

    @PreDestroy
    public void preDestroy() {
        System.out.println("5.Person的preDestroy方法被调用了");
    }
}
